package com.piotrs10.bsk.model.permissions;

import java.io.Serializable;

public class Uprawnienia implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -4865631670934743834L;
	private Integer id;
	private TypUprawnien typUprawnien;
	private Uzytkownik uzytkownik;
	private Uzytkownik grantor;
	private boolean mozePrzekazywac; // czy posiada grant option
	private long czasPrzekazania;
	private ObiektDB obiekt;

	public Uprawnienia(Integer id, TypUprawnien typUprawnien,
			Uzytkownik uzytkownik, Uzytkownik grantor, boolean mozePrzekazywac,
			long czasPrzekazania, ObiektDB obiekt) {
		super();
		this.id = id;
		this.typUprawnien = typUprawnien;
		this.uzytkownik = uzytkownik;
		this.grantor = grantor;
		this.mozePrzekazywac = mozePrzekazywac;
		this.czasPrzekazania = czasPrzekazania;
		this.obiekt = obiekt;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public TypUprawnien getTypUprawnien() {
		return typUprawnien;
	}

	public void setTypUprawnien(TypUprawnien typUprawnien) {
		this.typUprawnien = typUprawnien;
	}

	public Uzytkownik getUzytkownik() {
		return uzytkownik;
	}

	public void setUzytkownik(Uzytkownik uzytkownik) {
		this.uzytkownik = uzytkownik;
	}

	public Uzytkownik getGrantor() {
		return grantor;
	}

	public void setGrantor(Uzytkownik grantor) {
		this.grantor = grantor;
	}

	public boolean isMozePrzekazywac() {
		return mozePrzekazywac;
	}

	public void setMozePrzekazywac(boolean mozePrzekazywac) {
		this.mozePrzekazywac = mozePrzekazywac;
	}

	public long getCzasPrzekazania() {
		return czasPrzekazania;
	}

	public void setCzasPrzekazania(long czasPrzekazania) {
		this.czasPrzekazania = czasPrzekazania;
	}

	public ObiektDB getObiekt() {
		return obiekt;
	}

	public void setObiekt(ObiektDB obiekt) {
		this.obiekt = obiekt;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ (int) (czasPrzekazania ^ (czasPrzekazania >>> 32));
		result = prime * result + ((grantor == null) ? 0 : grantor.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + (mozePrzekazywac ? 1231 : 1237);
		result = prime * result + ((obiekt == null) ? 0 : obiekt.hashCode());
		result = prime * result
				+ ((typUprawnien == null) ? 0 : typUprawnien.hashCode());
		result = prime * result
				+ ((uzytkownik == null) ? 0 : uzytkownik.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Uprawnienia other = (Uprawnienia) obj;
		if (czasPrzekazania != other.czasPrzekazania)
			return false;
		if (grantor == null) {
			if (other.grantor != null)
				return false;
		} else if (!grantor.equals(other.grantor))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (mozePrzekazywac != other.mozePrzekazywac)
			return false;
		if (obiekt == null) {
			if (other.obiekt != null)
				return false;
		} else if (!obiekt.equals(other.obiekt))
			return false;
		if (typUprawnien == null) {
			if (other.typUprawnien != null)
				return false;
		} else if (!typUprawnien.equals(other.typUprawnien))
			return false;
		if (uzytkownik == null) {
			if (other.uzytkownik != null)
				return false;
		} else if (!uzytkownik.equals(other.uzytkownik))
			return false;
		return true;
	}

}
